﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//int main()
//{
//	//用for循环将数组的0-9下标打印出来
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	for (int i = 0; i <= 9; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	for (int i = 0; i <= 9; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	for (int i = 0; i <= 9; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (i = 0; i <= sz; i++)
//	{
//		printf("&arr[%d] = %p\n", i, &arr[i]);//数组在内存中是连续存放的
//	}
// 随着下标增长，地址是由低地址到高地址变化
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	printf("%d\n", sizeof(arr));
//	return 0;
//}

//int main()
//{
//	//二维数组初始化
//	//初始化实省略行，但不能省略列
//	//int arr[][5] = { 1,2,3 };
//	//行列都从0开始
//	int arr[3][5] = { 1,2,3,4,5,2,3,4,5,6,3,4,5,6,7 };
//	printf("%d ", arr[2][4]);
//	return 0;
//}

//int main()
//{
//	int arr[3][5] = { 0 };
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			scanf("%d", &arr[i][j]);
//		}
//	}
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}

//int main()
//{
//	int arr[3][5] = { 0 };
//	//把数组每个元素的地址打印出来
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);
//		}
//	}
//	return 0;
//}
//二维数组在内存中也是连续存放

//int main()
//{
//	int arr1[5];
//	int arr2[3 + 5];
//	int arr3[8];
//	int arr4[] = { 1,2,3,4 };
//	int arr5[] = { 0 };//这个数组只有一个元素
//
//	int n = 10;
//	//int arr6[n];//C99之前数组大小只能用常量或常量表达式指定
//	return 0;
//}//C99中引入了变长数组的概念，这是创建数组的时候可以使用变量来指定大小  
//遗憾的是VS不支持变长数组
//小熊猫C++使用了gcc这个编译器
//gcc是支持变长数组的

#include <string.h>
#include <windows.h>
#include <stdlib.h>

int main()
{
	//char arr[] = "abc; //[a b c \0]
	//                      0 1 2
	// 
	char arr1[] = "welcome to bit!!!!!!";
	char arr2[] = "********************";

	int left = 0;
	int right = strlen(arr1) - 1;//求字符串长度用的是strlen()

	while (left < right)//循环条件
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
		Sleep(1000);//单位是毫秒,减慢打印时间(睡眠)
		system("cls");
		left++;
		right--;
	}

	return 0;
}

//二分查找
//int main()
//{
//	int flag = 0;
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int k = 7;//在数组中查找7
//	//scanf("%d", &k);//也可以自己输入想要找的元素的下标
//
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//
//	for (i = 0; i < sz; i++)//用for循环遍历一边查找
//	{
//		if (arr[i]==k)
//		{
//			printf("找到了，下标是:%d", i);
//			flag = 1;
//			break;
//		}
//	}
//	if (flag == 0)
//	{
//		printf("找不到\n");
//	}
//	return 0;
//}

//int main()
//{
//	int flag = 0;
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int k = 7;//在数组中查找7
//	//scanf("%d", &k);//也可以自己输入想要找的元素的下标
//
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	//1.找出数组中的中间元素(计算出中间元素的下标)
//	//左右下标-->中间元素的下标
//
//	int left = 0;
//	int right = sz - 1;
//
//	while (left <= right)
//	{
//		int mid = left + (right - left) / 2;//考虑int的最大值
//		if (arr[mid] < k)
//		{
//			left = mid + 1;
//		}
//		else if (arr[mid] > k)
//		{
//			right = mid - 1;
//		}
//		else
//		{
//			printf("找到了，下标是:%d\n", mid);
//			flag = 1;
//			break;
//		}
//	}
//	if (flag == 0)
//	{
//		printf("找不到\n");
//	}
//
//	return 0;
//}

#include <math.h>

//int main()
//{
//	double x = 4.0;
//	double y = sqrt(x);//计算平方根的库函数
//	printf("%.2f\n", y);
//	return 0;
//}

//int sum(int x, int y)
//{
//	return x + y;
//}
//
//int main()
//{
//	int a = 0;
//	int b = 0;
//	printf("请输入：");
//	scanf("%d %d", &a, &b);
//	int z = sum(a, b);
//	printf("%d + %d = %d",a,b, z);
//	return 0;
//}

//void set_arr(int arr[], int sz)
//{
//	//遍历
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		arr[i] = -1;
//	}
//}
//
//void print_arr(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//}
//
////写⼀个函数对将⼀个整型数组的内容，全部置为-1
//// 再写⼀个函数打印数组的内容
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	set_arr(arr,sz);//遍历为-1的函数
//	print_arr(arr,sz);//打印函数
//	return 0;
//}

//嵌套调⽤和链式访问
//计算某年某月有多少天

//1 "2" 3 4 5 6 7 8 9 10 11 12
    //28/29

//int is_leap_year(int y)
//{
//	if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
//	{
//		return 1;//闰年返回1
//	}
//	else
//	{
//		return 0;//不是闰年返回0
//	}
//}

#include <stdbool.h>

//_Bool is_leap_year(int y)
//{
//	if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
//	{
//		return true;//闰年返回1
//	}
//	else
//	{
//		return false;//不是闰年返回0
//	}
//}
//
//int get_day_of_month(int y, int m)
//{
//	//因为2月份的特殊性，这里面还需要一个判断是否为闰年的函数
//	int days[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
//	int day = days[m];
//
//	if (is_leap_year(y) && m == 2)//必须是闰年并且为2月份才能+1
//	{
//		day += 1;
//	}
//	return day;
//}
//
//int main()
//{
//	int year = 0;
//	int month = 0;
//	scanf("%d %d", &year, &month);
//	int days = get_day_of_month(year, month);//计算某年某月有多少天的函数
//	printf("%d\n", days);
//	return 0;
//}

#include <string.h>

//int main()
//{
//    //链式访问
//    //所谓链式访问就是将⼀个函数的返回值作为另外⼀个函数的参数
//    printf("%d\n", strlen("abcdef"));
//    printf("%d", printf("%d", printf("%d", 43)));//printf的"返回值"是打印在屏幕上字符的个数
//
//    return 0;
//}

//多个文件
//函数声明放在头文件.h中，函数实现.c文件中

//加法

#include "add.h"

//int main()
//{
//    int a = 0;
//    int b = 0;
//    scanf("%d %d", &a, &b);
//    int ret = Add(a, b);
//    printf("%d\n", ret);
//    return 0;
//} 

